iT邦幫忙

2017 iT 邦幫忙鐵人賽
DAY 10
0
自我挑戰組

Angular2學習筆記系列 第 10

Angular2 實戰篇 (四)

  • 分享至 

  • xImage
  •  

建立TourList的Service

在指定的目錄下按右鍵選擇ng g service

我們先建立一個tour.service.ts用來串接tour api

這邊先做取得行程列表的功能getTourList()

in tour.service.ts

import { Injectable } from '@angular/core';
import { Http, Response } from '@angular/http';
import 'rxjs/operators/map';

@Injectable()
export class TourService {

  url:string = "http://localhost:3000/tours"

  constructor(private http:Http) { }

  getTourList() {
    return this.http
      .get(this.url)
      .map((res:Response) => res.json());
  }

}

而這個TourService必需要在TourModle中宣告在provider區塊,我們的TourComponet才能使用這個服務。

// in tour.module.ts
import { TourService } from './tour.service';

@NgModule({
  ...
  providers:[TourService]
})
export class TourModule { }

接下來我們在TourListComponet使用TourService

  • 首先,我們在Constructor宣告private變數注入Service

  • 然後,在ngOnInit(元件初始化)時,利用tourService的getTourList的方法取得行程列表資料。

// in tour-list.component.ts
...
import { TourService } from '../tour.service';

@Component({
  selector: 'app-tour-list',
  templateUrl: './tour-list.component.html',
  styleUrls: ['./tour-list.component.css']
})
export class TourListComponent implements OnInit {

  tourList:any[] = [];

  constructor(private tourService:TourService) { }

  ngOnInit() {
    this.tourService
      .getTourList()
      .subscribe((response) => {
        this.tourList = data;
      });
  }

}

我們可以在tour-list.component.html

先使用<pre>{{tourList|json}}</pre>檢視資料

美化TourListComponet

接下來利用Bootstrap 4 Card的樣式做列表

<div class="container-fluid">
  <div class="card-deck-wrapper">
    <div class="card-deck">
      <div class="card " *ngFor="let tour of tourList">
        <img class="card-img-top" width="100%" [src]="tour.imgurl" alt="tour.name">
        <div class="card-block">
          <h4 class="card-title">{{tour.name}}</h4>
          <h6 class="card-subtitle text-muted">
            <span>地點:{{tour.location}}</span>
          </h6>
          <p class="card-text">價錢:{{tour.price | currency:'TWD'}}</p>
          <a href="#" class="btn btn-primary">檢視</a>
        </div>
      </div>
    </div>
  </div>
</div>

就完成漂亮的行程列表頁面。


上一篇
Angular2 實戰篇 (三)
下一篇
Angular2 實戰篇(五)
系列文
Angular2學習筆記19
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言